#pragma region 【算法5 - 6】图的广度优先遍历
int flag[N] = {0}; //全局数组初始化为0
void BFSTraverse(Graph *G, int v)
{                 //对G进行广度优先遍历
    InitQueue(Q); //置空的队列Q
    if (!flag[v]) // v尚未访问
    {
        EnQueue(Q, v);
        flag[v] = 1;               // v入队
        while (!QueueEmpty(Q))     //队列不空
        {
            DeQueue(Q, u); //队头元素出队，从队列取元素并访问
            Visited(u);    //访问该顶点
            for (w = FirstAdjVex(G, u); w; w = NextAdjVex(G, u, w))
                if (!flag[w])
                { //依次将从未进入过队列的邻接顶点入队
                    EnQueue(Q, w);
                    flag[w] = 1; 
                }
        }
    }
}
#pragma endregion